﻿// JScript File

function Timer(adsPlayer, timerFasade)
{
    this.pAdsPlayer = adsPlayer;
    this.fasade = timerFasade;            
    this.time = 0;
    this.id;
    this.needToUse = false;
    this.predTime;      //  сколько было времени в предыдущий раз
    
    this.Init = function()
    {
        var timeLimits = isMozilla ? this.pAdsPlayer.xmlSource.evaluate("assessmentTest/timeLimits", this.pAdsPlayer.xmlSource, null, 9, null).singleNodeValue : this.pAdsPlayer.xmlSource.selectSingleNode("assessmentTest/timeLimits");
        var maxTime = isMozilla ? timeLimits.attributes.getNamedItem("maxTime").textContent : timeLimits.attributes.getNamedItem("maxTime").text;                
        if (maxTime > "0")
        {
            this.time = maxTime;                   
            this.needToUse = true;
        }    
        this.fasade.innerHTML = "<br/>";
    }
    this.Start = function()
    {
        if (this.needToUse)
        {
            this.id = window.setInterval(this.Process, 1000);
            this.predTime = new Date().getTime();
        }
    }
    this.Stop = function()
    {
        window.clearInterval(this.id);  
    }
    
    // в этом методе юзается timerPointer, так как this не пахает (отдельный поток)
    this.Process = function()
    {       
        var nowTime = new Date().getTime();        // чтоб не "украсть" время
        var intervalInMS = Math.floor(nowTime - timerPointer.predTime - 0);                
        if (intervalInMS < 1000)           // защита от перевода изменения системного времени на компе
            intervalInMS = 1000;
        timerPointer.predTime += intervalInMS;
        var interval = Math.floor(intervalInMS/1000);                                
        timerPointer.time -= interval;                        
        if (timerPointer.time <= 0)
        {
            ShowMessage(Timer_TimoutMessageText);         
            timerPointer.pAdsPlayer.Finish(false);
            return;                          
        }
       timerPointer.fasade.innerHTML = "<span class='ms-descriptionText'>" + Timer_TimeLeft + timeToStr(timerPointer.time) + "</span>";        
    }
}
